package com.rytx.system.domain.ysp;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.rytx.common.xss.Xss;
import com.rytx.common.annotation.Excel;
import com.rytx.common.core.domain.BaseEntity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

/**
 * 商品对象 art_rental
 *
 * @author rytx
 * @date 2024-05-19
 */
public class ArtRental extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 作品名称 */
    @Excel(name = "作品名称")
    @NotBlank(message = "作品名称不能为空")
    private String artName;

    /** 作品尺寸 */
    @Excel(name = "作品尺寸")
    private BigDecimal artSize;

    /** 作品描述 */
    @Excel(name = "作品描述")
    @NotBlank(message = "作品描述不能为空")
    private String artDescription;

    /** 专业推荐 */
    @Excel(name = "专业推荐")
    private String profRec;

    /** 热门作品 */
    @Excel(name = "热门作品")
    private String pop;

    /** 艺术家姓名 */
    @Excel(name = "艺术家姓名")
    private String artistName;

    /** 作品轮播图 */
    @Excel(name = "作品轮播图")
    private String carouselImg;

    /** 作品图片路径 */
    @Excel(name = "作品图片路径")
    private String artImgUrl;

    /** 商品价格 */
    @Excel(name = "商品价格")
    private BigDecimal price;

    /** 起租天数（月） */
    @Excel(name = "起租天数", readConverterExp = "月=")
    private Long rentalDays;

    /** 出租开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出租开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date rentalStartDate;

    /** 出租结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出租结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date rentalEndDate;

    /** 出租费用 */
    @Excel(name = "出租费用")
    private BigDecimal rentalFee;

    /** 出售费用 */
    @Excel(name = "出售费用")
    private BigDecimal saleFee;

    /** 租户姓名 */
    @Excel(name = "租户姓名")
    private String tenantName;

    /** 联系方式 */
    @Excel(name = "联系方式")
    private String contactInformation;

    /** 出租状态 0：未出租 1：已出租 2：已归还 3：已过期 4：已取消 5：已退款 6：已售出 */
    @Excel(name = " 0：未上架 1：已上架 2：已出租 3：已出售 4：归还中 5：已归还 6：已售出")
    private String rentalStatus;

    /** 售出日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "售出日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date saleDate;

    /** 出租备注 */
    @Excel(name = "出租备注")
    private String rentalRemarks;

    /** 出租图片 */
    @Excel(name = "出租图片")
    private String rentalImg;

    /** 出租订单号 */
    @Excel(name = "出租订单号")
    private String rentalOrderNo;

    private String artAuthorDesc; // 艺术家描述

    private BigDecimal discountPrice; //折扣金额
    private float discountRate; //折扣率
    private String artType; //折扣原因
    private String artFramed; //作品框，是否装裱0否1是
    private Long artColl; //收藏人数
    private Long artView; //查看人数
    private Long[] cIds; // 风格
    private Long[] pIds; // 分类
    private Long[] tIds; // 题材
    private Long[] sIds; // 摆放空间

    private String strCids; //  分类
    private String strPids; //  摆放空间
    private String strTids; // 题材
    private String strSids; // 风格

    private String strFormatCids; //  分类
    private String strFormatPids; //  摆放空间
    private String strFormatTids; // 题材
    private String strFormatSids;  // 风格
    private int activityDiscountPrice;  // 活动折扣价格
    private String discountStartDate;  // 活动折扣开始时间
    private String discountEndDate;  // 活动折扣结束时间
    private String activitySpecialPrice;  // 活动特价价格
    private String specialStartDate;  // 活动特价开始时间
    private String specialEndDate;  // 活动特价结束时间
//    private List<PCategory> pCategoryList;
//    private List<PPlacement> pPlacementList;
//    private List<PStyle> pStyleList;
//    private List<PTheme> pThemeList;


    private Long favorite;//收藏数
    private Long viewHistory;//浏览数

    private Integer goodsNum; // 商品数量
    private String seacrchValue; // 搜索值

    public String getSeacrchValue() {
        return seacrchValue;
    }

    public void setSeacrchValue(String seacrchValue) {
        this.seacrchValue = seacrchValue;
    }

    public String getStrFormatCids() {
        return strFormatCids;
    }

    public void setStrFormatCids(String strFormatCids) {
        this.strFormatCids = strFormatCids;
    }

    public String getStrFormatPids() {
        return strFormatPids;
    }

    public void setStrFormatPids(String strFormatPids) {
        this.strFormatPids = strFormatPids;
    }

    public String getStrFormatTids() {
        return strFormatTids;
    }

    public void setStrFormatTids(String strFormatTids) {
        this.strFormatTids = strFormatTids;
    }

    public String getStrFormatSids() {
        return strFormatSids;
    }

    public void setStrFormatSids(String strFormatSids) {
        this.strFormatSids = strFormatSids;
    }

    public Integer getGoodsNum() {
        return goodsNum;
    }

    public void setGoodsNum(Integer goodsNum) {
        this.goodsNum = goodsNum;
    }

    public String getArtAuthorDesc() {
        return artAuthorDesc;
    }

    public void setArtAuthorDesc(String artAuthorDesc) {
        this.artAuthorDesc = artAuthorDesc;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setArtName(String artName)
    {
        this.artName = artName;
    }

    public String getArtName()
    {
        return artName;
    }
    public void setArtSize(BigDecimal artSize)
    {
        this.artSize = artSize;
    }

    public BigDecimal getArtSize()
    {
        return artSize;
    }
    public void setArtDescription(String artDescription)
    {
        this.artDescription = artDescription;
    }

    public String getArtDescription()
    {
        return artDescription;
    }
    public void setProfRec(String profRec)
    {
        this.profRec = profRec;
    }

    public String getProfRec()
    {
        return profRec;
    }
    public void setPop(String pop)
    {
        this.pop = pop;
    }

    public String getPop()
    {
        return pop;
    }
    public void setArtistName(String artistName)
    {
        this.artistName = artistName;
    }
    @Xss(message = "艺术家姓名不能包含脚本字符")
    @NotBlank(message = "艺术家姓名不能为空")
    @Size(min = 2, max = 10, message = "艺术家姓名长度为2-10个字符")
    public String getArtistName()
    {
        return artistName;
    }
    public void setCarouselImg(String carouselImg)
    {
        this.carouselImg = carouselImg;
    }

    public String getCarouselImg()
    {
        return carouselImg;
    }
    public void setArtImgUrl(String artImgUrl)
    {
        this.artImgUrl = artImgUrl;
    }

    public String getArtImgUrl()
    {
        return artImgUrl;
    }
    public void setPrice(BigDecimal price)
    {
        this.price = price;
    }

    public BigDecimal getPrice()
    {
        return price;
    }
    public void setRentalDays(Long rentalDays)
    {
        this.rentalDays = rentalDays;
    }

    public Long getRentalDays()
    {
        return rentalDays;
    }
    public void setRentalStartDate(Date rentalStartDate)
    {
        this.rentalStartDate = rentalStartDate;
    }

    public Date getRentalStartDate()
    {
        return rentalStartDate;
    }
    public void setRentalEndDate(Date rentalEndDate)
    {
        this.rentalEndDate = rentalEndDate;
    }

    public Date getRentalEndDate()
    {
        return rentalEndDate;
    }
    public void setRentalFee(BigDecimal rentalFee)
    {
        this.rentalFee = rentalFee;
    }

    public BigDecimal getRentalFee()
    {
        return rentalFee;
    }
    public void setSaleFee(BigDecimal saleFee)
    {
        this.saleFee = saleFee;
    }

    public BigDecimal getSaleFee()
    {
        return saleFee;
    }
    public void setTenantName(String tenantName)
    {
        this.tenantName = tenantName;
    }

    public String getTenantName()
    {
        return tenantName;
    }
    public void setContactInformation(String contactInformation)
    {
        this.contactInformation = contactInformation;
    }

    public String getContactInformation()
    {
        return contactInformation;
    }
    public void setRentalStatus(String rentalStatus)
    {
        this.rentalStatus = rentalStatus;
    }

    public String getRentalStatus()
    {
        return rentalStatus;
    }
    public void setSaleDate(Date saleDate)
    {
        this.saleDate = saleDate;
    }

    public Date getSaleDate()
    {
        return saleDate;
    }
    public void setRentalRemarks(String rentalRemarks)
    {
        this.rentalRemarks = rentalRemarks;
    }

    public String getRentalRemarks()
    {
        return rentalRemarks;
    }
    public void setRentalImg(String rentalImg)
    {
        this.rentalImg = rentalImg;
    }

    public String getRentalImg()
    {
        return rentalImg;
    }
    public void setRentalOrderNo(String rentalOrderNo)
    {
        this.rentalOrderNo = rentalOrderNo;
    }

    public String getRentalOrderNo()
    {
        return rentalOrderNo;
    }


    public Long[] getcIds() {
        return cIds;
    }

    public void setcIds(Long[] cIds) {
        this.cIds = cIds;
    }

    public Long[] getpIds() {
        return pIds;
    }

    public void setpIds(Long[] pIds) {
        this.pIds = pIds;
    }

    public Long[] gettIds() {
        return tIds;
    }

    public void settIds(Long[] tIds) {
        this.tIds = tIds;
    }

    public Long[] getsIds() {
        return sIds;
    }

    public void setsIds(Long[] sIds) {
        this.sIds = sIds;
    }

    public Long getFavorite() {
        return favorite;
    }

    public void setFavorite(Long favorite) {
        this.favorite = favorite;
    }

    public Long getViewHistory() {
        return viewHistory;
    }

    public void setViewHistory(Long viewHistory) {
        this.viewHistory = viewHistory;
    }

    public String getStrCids() {
        return strCids;
    }

    public void setStrCids(String strCids) {
        //字符串转数组
        if(strCids != null && !"".equals(strCids)){
            String[] cids = strCids.split(",");
            Long[] cidsLong = new Long[cids.length];
            for(int i=0;i<cids.length;i++){
                cidsLong[i] = Long.parseLong(cids[i]);
            }
            this.cIds = cidsLong;
        }
        this.strCids = strCids;
    }

    public String getStrPids() {
        return strPids;
    }

    public void setStrPids(String strPids) {
        //字符串转数组
        if(strPids != null && !"".equals(strPids)){
            String[] pids = strPids.split(",");
            Long[] pidsLong = new Long[pids.length];
            for(int i=0;i<pids.length;i++){
                pidsLong[i] = Long.parseLong(pids[i]);
            }
            this.pIds = pidsLong;
        }
        this.strPids = strPids;
    }

    public String getStrTids() {
        return strTids;
    }

    public void setStrTids(String strTids) {
        //字符串转数组
        if(strTids != null && !"".equals(strTids)){
            String[] tids = strTids.split(",");
            Long[] tidsLong = new Long[tids.length];
            for(int i=0;i<tids.length;i++){
                tidsLong[i] = Long.parseLong(tids[i]);
            }
            this.tIds = tidsLong;
        }
        this.strTids = strTids;
    }

    public String getStrSids() {
        return strSids;
    }

    public void setStrSids(String strSids) {
        //字符串转数组
        if(strSids != null && !"".equals(strSids)){
            String[] sids = strSids.split(",");
            Long[] sidsLong = new Long[sids.length];
            for(int i=0;i<sids.length;i++){
                sidsLong[i] = Long.parseLong(sids[i]);
            }
            this.sIds = sidsLong;
        }
        this.strSids = strSids;
    }
//    public List<PCategory> getpCategoryList() {
//        return pCategoryList;
//    }
//
//    public void setpCategoryList(List<PCategory> pCategoryList) {
//        this.pCategoryList = pCategoryList;
//    }
//
//    public List<PPlacement> getpPlacementList() {
//        return pPlacementList;
//    }
//
//    public void setpPlacementList(List<PPlacement> pPlacementList) {
//        this.pPlacementList = pPlacementList;
//    }
//
//    public List<PStyle> getpStyleList() {
//        return pStyleList;
//    }
//
//    public void setpStyleList(List<PStyle> pStyleList) {
//        this.pStyleList = pStyleList;
//    }
//
//    public List<PTheme> getpThemeList() {
//        return pThemeList;
//    }
//
//    public void setpThemeList(List<PTheme> pThemeList) {
//        this.pThemeList = pThemeList;
//    }

    public BigDecimal getDiscountPrice() {
        return discountPrice;
    }

    public void setDiscountPrice(BigDecimal discountPrice) {
        this.discountPrice = discountPrice;
    }

    public String getArtType() {
        return artType;
    }

    public void setArtType(String artType) {
        this.artType = artType;
    }

    public float getDiscountRate() {
        return discountRate;
    }

    public void setDiscountRate(float discountRate) {
        this.discountRate = discountRate;
    }

    public String getArtFramed() {
        return artFramed;
    }

    public void setArtFramed(String artFramed) {
        this.artFramed = artFramed;
    }

    public Long getArtView() {
        return artView;
    }

    public void setArtView(Long artView) {
        this.artView = artView;
    }

    public Long getArtColl() {
        return artColl;
    }

    public void setArtColl(Long artColl) {
        this.artColl = artColl;
    }

    @Override
    public String toString() {
        return "ArtRental{" +
                "id=" + id +
                ", artName='" + artName + '\'' +
                ", artSize=" + artSize +
                ", artDescription='" + artDescription + '\'' +
                ", profRec='" + profRec + '\'' +
                ", pop='" + pop + '\'' +
                ", artistName='" + artistName + '\'' +
                ", carouselImg='" + carouselImg + '\'' +
                ", artImgUrl='" + artImgUrl + '\'' +
                ", price=" + price +
                ", rentalDays=" + rentalDays +
                ", rentalStartDate=" + rentalStartDate +
                ", rentalEndDate=" + rentalEndDate +
                ", rentalFee=" + rentalFee +
                ", saleFee=" + saleFee +
                ", tenantName='" + tenantName + '\'' +
                ", contactInformation='" + contactInformation + '\'' +
                ", rentalStatus='" + rentalStatus + '\'' +
                ", saleDate=" + saleDate +
                ", rentalRemarks='" + rentalRemarks + '\'' +
                ", rentalImg='" + rentalImg + '\'' +
                ", rentalOrderNo='" + rentalOrderNo + '\'' +
                ", discountPrice=" + discountPrice +
                ", discountRate=" + discountRate +
                ", artType='" + artType + '\'' +
                ", artFramed='" + artFramed + '\'' +
                ", artColl=" + artColl +
                ", artView=" + artView +
                ", cIds=" + Arrays.toString(cIds) +
                ", pIds=" + Arrays.toString(pIds) +
                ", tIds=" + Arrays.toString(tIds) +
                ", sIds=" + Arrays.toString(sIds) +
                ", strCids='" + strCids + '\'' +
                ", strPids='" + strPids + '\'' +
                ", strTids='" + strTids + '\'' +
                ", strSids='" + strSids + '\'' +
                ", favorite=" + favorite +
                ", viewHistory=" + viewHistory +
                '}';
    }

    public int getActivityDiscountPrice() {
        return activityDiscountPrice;
    }

    public void setActivityDiscountPrice(int activityDiscountPrice) {
        this.activityDiscountPrice = activityDiscountPrice;
    }

    public String getDiscountStartDate() {
        return discountStartDate;
    }

    public void setDiscountStartDate(String discountStartDate) {
        this.discountStartDate = discountStartDate;
    }

    public String getDiscountEndDate() {
        return discountEndDate;
    }

    public void setDiscountEndDate(String discountEndDate) {
        this.discountEndDate = discountEndDate;
    }

    public String getActivitySpecialPrice() {
        return activitySpecialPrice;
    }

    public void setActivitySpecialPrice(String activitySpecialPrice) {
        this.activitySpecialPrice = activitySpecialPrice;
    }

    public String getSpecialStartDate() {
        return specialStartDate;
    }

    public void setSpecialStartDate(String specialStartDate) {
        this.specialStartDate = specialStartDate;
    }

    public String getSpecialEndDate() {
        return specialEndDate;
    }

    public void setSpecialEndDate(String specialEndDate) {
        this.specialEndDate = specialEndDate;
    }
}
